SAFE Logo
CodeMatch Detailed Report
Version: 5.7.2 | Date: 08/27/16 | Time: 18:44:41

SCORE

SETTINGS
Compare file 1: Z:\Zeidman Consulting\projects\DOS and CPM\code\CHM\CPM\1.3\BDOS.plm
To file 2: Z:\Zeidman Consulting\projects\DOS and CPM\code\CHM\CPM\1.3\BDOS.plm
Links to results: Matching Statements
Matching Comments and Strings
Matching Instruction Sequences
Matching Identifiers
Partially Matching Identifiers
Score
RESULTS
Matching Statements
File1 Line# File2 Line# Statement
11DECLARE FDOS LITERALLY
88FDOS: DECLARE BOOT LITERALLY
1414DECLARE BASE LITERALLY
5252DISKMON: PROCEDURE(FUNC,INFO) ADDRESS
5353DECLARE COPYRIGHT DATA(
5656DECLARE FUNC BYTE,
5757LINFO BYTE,
5858INFO ADDRESS,
5959ARET ADDRESS, RET BYTE
9696EQU LITERALLY ,
9797BOOTF EQU ,
9898PROOT EQU ,
9999CONSF EQU ,
100100CONIF EQU ,
101101CONOF EQU ,
102102LISTF EQU ,
103103PUNF EQU ,
104104READF EQU ,
105105HOMF EQU ,
106106SELF EQU ,
107107TRKF EQU ,
108108SECF EQU ,
109109DMAF EQU ,
110110DRDF EQU ,
111111DWRF EQU
113113DECLARE TRUE LITERALLY ,
114114FALSE LITERALLY
116116DECLARE CHAR$RDY BYTE INITIAL(FALSE),
117117KB$CHAR BYTE,
118118LISTCOPY BYTE
120120CONRDY: PROCEDURE BYTE
122122GO TO CONSF
123123END CONRDY
125125CONIN: PROCEDURE BYTE
127127IF CHAR$RDY THEN
128128CHAR$RDY = FALSE
128128RETURN KB$CHAR
131131GO TO CONIF
132132END CONIN
134134CONBRK: PROCEDURE BYTE
135
466
135
466
DECLARE CTLC LITERALLY
136136DECLARE CTLS LITERALLY
137137IF CHAR$RDY THEN RETURN TRUE
138138IF CONRDY THEN
140140IF (KB$CHAR:= CONIN) = CTLS THEN
141141IF CONIN = CTLC THEN GO TO SOOT
142
146
142
146
RETURN FALSE
144144RETURN (CHAR$RDY:= TRUE)
147147END CONBRK
149149CONCHAR: PROCEDURE(CHAR)
150
155
163
168
150
155
163
168
DECLARE CHAR BYTE
151151GO TO CONCF
152152END CONCHAR
154154CONOUT: PROCEDURE(CHAR)
157157IF CONBRK THEN
159159CALL CONCHAR(CHAR)
160160END CONOUT
162162LSTOUT: PROCEDURE(CHAR)
164164GO TO LISTF
165165END LSTOUT
167167^PUNOUT: PROCEDURE(CHAR)
169169GO TO PUNF
170170END PUNOUT
172172READIN: PROCEDURE BYTE
173173GO TO READF
174174END READIN
176176TRACK0: PROCEDURE
177177GO TO HOMF
178178END TRACK0
180180SELDISK: PROCEDURE(DISK)
181181DECLARE DISK BYTE
182182GO TO SELF
183183END SELDISK
185185SELTRK: PROCEDURE(TRACK)
186186DECLARE TRACK BYTE
187187GO TO TRKF
188188END SELTRK
190190SELSEC: PROCEDURE(SECTOR)
191191DECLARE SECTOR BYTE
192192GO TO SECF
193193END SELSEC
195195READ$DISK: PROCEDURE BYTE
196196GO TO DRDF
197197END READ$DISK
199199WRITE$DISK: PROCEDURE BYTE
200200GO TO DWRF
201201END WRITE$DISK
207207ALT EQU ,
208208ESC EQU ,
209209TAB EQU ,
210210BEL EQU ,
211211LF EQU ,
212212CR EQU
214214DECLARE COLUMN BYTE INITIAL(0),
216216DECLARE IOSTATA ADDRESS INITIAL(3),
217217IOSTAT BASED IOSTATA BYTE
241241TABOUT: PROCEDURE(CHAR)
242242DECLARE (I, CHAR) BYTE
243243I = (CHAR = TAB AND (7 - (COLUMN AND 7)))
244244IF CHAR = TAB THEN CHAR =
245245DO WHILE (I:= I - 1) <> 254
246246IF CHAR = CR THEN COLUMN = 0
247247IF CHAR >= THEN COLUMN=COLUMN+1
248248CALL CONOUT(CHAR)
249249IF LISTCOPY THEN CALL LSTOUT(CHAR)
251251END TABOUT
254254CRLF: PROCEDURE
255
313
255
313
CALL TABOUT(CR)
256256CALL TABOUT(LF)
257257END CRLF
259259PRINT: PROCEDURE(A)
260260DECLARE A ADDRESS, (I, M BASED A) BYTE
263263DO WHILE (I:=M) <> CALL TABOUT(I)
264264A = A + 1
266266END PRINT
268268READ: PROCEDURE
276276SLASH EQU ,
277277CTLC EQU ,
278278CTLU EQU ,
279279CTL EQU ,
280280CTLE EQU ,
281281CTLP EQU ,
282282CTLZ EQU ,
283283CTLL EQU
291291DECLARE MAXL BASED INFO BYTE,
292292COMLEN BYTE,
293293BUFFER BASED INFO BYTE,
294294C BYTE
296296CTLOUT: PROCEDURE
298298CALL TABOUT(CTL)
298298CALL TABOUT(C OR 40H)
299299END CTLOUT
301301COMLEN = 0
302302DO WHILE COMLEN < MAXL
304304IF (C := CONIN) = CTLC THEN
305
317
326
305
317
326
CALL CTLOUT
305
309
317
472
477
819
820
305
309
317
472
477
819
820
CALL CRLF
306
820
878
306
820
878
GO TO BOOT
308308IF C = CTLE THEN
310310IF C = CTLP THEN LISTCOPY = NOT LISTCOPY
311311IF C = CR THEN
312312BUFFER(1) = COMLEN
316316IF C = CTLU THEN
317317COMLEN=B
319319IF C = 7FH THEN
321321IF COMLEN > 0 THEN
322322CALL TABOUT(BUFFER((COMLEN = COMLEN-1)+2))
325325IF (C AND 01100000B) = 0 THEN
327327IF C = TAB THEN CALL TABOUT(TAB)
328328CALL TABOUT(C)
329329BUFFER((COMLEN := COMLEN+1)+1) = C
332332END READ
334334DECLARE MAXDSK EQU ,
335335NDISK EQU
337337DECLARE (DPTR, DCNT) BYTE,
338338BUFFA ADDRESS INITIAL(60H),
339339BUFF BASED BUFFA (128) BYTE
341341DECLARE DMX EQU ,
345345OFFSET EQU ,
347347AL1 EQU ,
353353ALLOC0 (32) BYTE,
354354ALLOC1 (32) BYTE,
355355ALLOCA ADDRESS,
356356ALLOC BASED ALLOCA (32) BYTE
359359EMP EQU ,
361361MRD EQU MB ,
363363FOREVER EQU ,
364364MAL EQU ,
365365MRC EQU ,
366366DSF EQU ,
368368DMK EQU ,
369369FLN EQU ,
370370FSL EQU ,
372372FDM EQU ,
373373FRL EQU ,
374374FRC EQU ,
376376FRE EQU ,
377377LFB EQU ,
378378FNM EQU
380380DECLARE S BASED INFO (33) BYTE
411411OLDDSK BYTE,
412412FCBDSK BYTE,
413413CURDSK BYTE INITIAL(0),
414414DLOG BYTE INITIAL(0),
415415CURTRKV (NDISK) BYTE,
416416CURRECV (NDISK) ADDRESS,
417417CURTRKA ADDRESS,
418418CURRECA ADDRESS,
419419CURREC BASED CURRECA ADDRESS,
420420CUPTRK BASED CURTRKA BYTE,
421421RCOUNT BYTE,
423423VRECORD BYTE,
424424ARECORD ADDRESS
426426PDISK: PROCEDURE
427
472
819
427
472
819
CALL PRINT(. )
428428CALL TABOUT( +CURDSK)
429429END PDISK
431431HOME: PROCEDURE
433433CALL TRACK0
434434CALL SELTRK(OFFSET)
435435CURREC, CURTRK = 0
436436END HOME
438438SEEK: PROCEDURE
440440DECLARE TRAN, DATA
441441(01H,07H,0DH,13H, 19H, 05H, 0BH, 11H, 17H, 03H, 09H, 0FH,
44244215H,02H,08H,BEH, 14H, 1AH, 06H, BCH, 12H, 18H, 04H, 0AH,
44344310H,16H)
445445DECLARE T ADDRESS
447447DO WHILE ARECORD < CURREC
448448CURREC = CURREC - 26
449449CURTRK = CURTRK - 1
451451DO WHILE ARECORD >= (T := CURREC + 26)
452452CURREC = T
453453CURTRK = CURTRK + 1
459459CALL SELTRK(CURTRK+OFFSET)
460460CALL SELSEC(TRAN(ARECORD - CURREC))
461461END SEEK
463463WAITIO: PROCEDURE(READING)
464
724
464
724
DECLARE READING BYTE
465465DECLARE COND BYTE
467467IF READING THEN COND = READ$DISK
468468COND = WRITE$DISK
469469IF COND = 0 THEN RETURN
473
820
473
820
CALL PDISK
473473IF CONIN = CTLC THEN GO TO BOOT
476476IF (IOSTAT AND 11B) > 1 THEN HALT
478478END WAITIO
480480RDBUFF: PROCEDURE
482482CALL WAITIO(TRUE)
483483END RDBUFF
485485WRBUFF: PROCEDURE
487487CALL WAITIO(FALSE)
488488END WRBUFF
490490INDEX: PROCEDURE
493493ARECORD = S(FDM+SHR(VRECORD, 3))
494494END INDEX
496496ATRAN: PROCEDURE
499499ARECORD = SHL(ARECORD, 3) OR (VRECORD AND 111B)
500500END ATRAN
502502GETFCB: PROCEDURE
504504VRECORD = S(FRL)
505505RCOUNT = S(FRC)
506506END GETFCB
508508SETFCB: PROCEDURE
511511S(FRL) = VRECORD + 1
512512S(FRC) = RCOUNT
513513END SETFCB
515515SEEK$DIR: PROCEDURE
517517ARECORD = SHR(DCRT, DSF)
518
761
795
518
761
795
CALL SEEK
519519END SEEK$DIR
521521READ$DIR: PROCEDURE
523523IF (DCNT:=DCNT+1) > DMX THEN
524
584
622
524
584
622
DCNT = 255
526526IF (DPTR:=SHL(DCNT AND DMK, FSL)) = 0 THEN
527
664
527
664
CALL SEEK$DIR
528
763
528
763
CALL RDBUFF
530530END READ$DIR
532532GET$ALLOC: PROCEDURE(I) BYTE
533
544
556
577
688
533
544
556
577
688
DECLARE I BYTE
534534RETURN ALLOC(I)
535535END GET$ALLOC
537537PUT$ALLOC: PROCEDURE(I,X)
538
561
538
561
DECLARE (I, X) BYTE
539539ALLOC(I) = X
540540END PUT$ALLOC
542542GET$ALLOC$BIT: PROCEDURE(I) BYTE
545545RETURN ROL(ALLOC(SHR(I, 3)), (I AND 1118)
546546END GET$ALLOC$BIT
548548SET$ALLOC$BIT: PROCEDURE(I,B)
550550DECLARE (I, B) BYTE
551551CALL PUT$ALLOC(SHR(I, 3)
552552ROR((GET$ALLOC$BIT(I) AND 0FEH) OR B, (I AND 111B) + 1))
553553END SET$ALLOC$SIT
555555GETBUFF: PROCEDURE(I) BYTE
557557RETURN BUFF(I)
558558END GETBUFF
560560PUTBUFF: PROCEDURE(I,X)
562562BUFF(I) = X
563563END PUTBUFF
565565SCANDM: PROCEDURE(BIT)
566566DECLARE (BIT, I, K) BYTE
570570DO I = DPTR+FDM TO DPTR+LFB
571571IF (K:= GETBUFF(I)) <> 0 THEN
572572CALL SET$ALLOC$BIT(K, BIT)
574574END SCANDM
576576INITIALIZE: PROCEDURE
579579RET = FALSE
580580ALLOC = AL1
581581DO I=1 TO 31
581581CALL PUT$ALLOC(I,0)
583
623
583
623
CALL HOME
585
605
632
585
605
632
DO FOREVER
586
606
586
606
CALL READ$DIR
587
633
729
587
633
729
IF DCNT = 255 THEN RETURN
588588IF GETBUFF(DPTR) <> EMP THEN
590590RET = RET OR GETBUFF(DPTR+1) =
592592CALL SCANDM(1)
595595END INITIALIZE
597597DECLARE SEARCHL BYTE
598598SEARCHA ADDRESS
600600SEARCHN: PROCEDURE
603603DECLARE (I, C) BYTE
604
928
604
928
INFO = SEARCHA
607607IF (RET := DCNT) = 255 THEN RETURN
608
782
608
782
I = 0
609609DO WHILE (I ( SEARCHL) AND
611611((C := S(I)) = GETBUFF (DPTR+I) OR C = 63)
612612I = I + 1
614614IF I = SEARCHL THEN RETURN
616616END SEARCHN
618618SEARCH: PROCEDURE(XL)
619619DECLARE XL BYTE
620620SEARCHL = XL
621621SEARCHA = INFO
625
639
683
929
625
639
683
929
CALL SEARCHN
626626END SEARCH
628628DELETE: PROCEDURE
629629DECLARE (I, J, K) BYTE
631
681
631
681
CALL SEARCH(FRE)
635635CALL SCANDM(0)
636636CALL PUTBUFF(DPTR, EMP)
638
665
796
638
665
796
CALL WRBUFF
641641END DELETE
643643GET$BLOCK: PROCEDURE(L) BYTE
646646DECLARE (L, R) BYTE
647647R = L
648648DO WHILE (R < MAL) OR (L > 0)
649649L = L - (1 AND L > 0)
650650R = R + (1 AND R < MAL)
651651IF NOT GET$ALLOC$BIT(R) THEN RETURN R
652652IF NOT GET$ALLOC$BIT(L) THEN RETURN L
654654RETURN 0
655655END GET$BLOCK
657657COPY$DIR: PROCEDURE(B,L)
658658DECLARE (B, L) BYTE
661661DO WHILE (L:=L-1) <> 255
662662CALL PUTBUFF(L+DPTR, S(B+L))
666666END COPY$DIR
668668COPY$FCB: PROCEDURE
670670CALL COPY$DIR(O, FRL)
671671END COPY$FCB
673673RENAME: PROCEDURE
682682DO WHILE DCNT <> 255
682682CALL COPY$DIR(FDM,FRE)
685685END RENAME
687687OPEN: PROCEDURE
690
699
732
925
690
699
732
925
CALL SEARCH(FNM)
691
700
712
691
700
712
IF DCNT <> 255 THEN
692
715
692
715
DO I = FNM TO LFB
693693S(I) = GETBUFF(DPTR+I)
695695END OPEN
697697CLOSE: PROCEDURE
701
719
701
719
CALL COPY$FCB
702702END CLOSE
704704MAKE: PROCEDURE
707707DECLARE I BYTE,
708708FCB ADDRESS
709709FCB = INFO
709709INFO = .EMP
711711CALL SEARCH(I)
714714INFO = FCB
716716S(I) = 0
721721END MAKE
723723OPEN$REEL: PROCEDURE(READING)
727
921
727
921
CALL CLOSE
731731S(FRE) = S(FRE) + 1
733
738
733
738
IF DCNT = 255 THEN
734734IF READING THEN RETURN
735
945
735
945
CALL MAKE
737
917
737
917
CALL OPEN
739
750
775
739
750
775
RET = 1
742
747
772
742
747
772
CALL GETFCB
743
807
743
807
RET = 0
744744END OPEN$REEL
746746DISKREAD: PROCEDURE
749749IF RCOUNT <= VRECORD THEN
751751IF VRECORD = 128 THEN CALL OPEN$REEL(TRUE)
752752VRECORD = 0
753753IF RET <> 0 THEN RETURN
755
776
755
776
CALL INDEX
758758IF LOW(ARECORD) = 0 THEN RET = 1
759
794
759
794
CALL ATRAN
764
803
809
764
803
809
CALL SETFCB
767767END DISKREAD
770770DISKWRITE: PROCEDURE
771771DECLARE (I L) BYTE
774774IF VRECORD > MRG THEN
777777IF LOW (ARECORD) = 0 THEN
783783IF (L := FDM + SHR(VRECORD, 3)) > FDM THEN
784784I = S(L=1)
785785IF (I = GET$BLOCK(I)) = 0 THEN
786786RET = 2
787787CALL SET$ALLOC$BIT(I,1)
789789ARECORD, S(L) = 1
793793IF RET = 0 THEN
797797IF RCOUNT <= VRECORD THEN RCOUNT = VRECORD +1
800800IF VRECORD = MRC THEN
803803CALL OPENREEL(FALSE)
806806IF RET = 0 THEN VRECORD = 255
812812END DISKWRITE
814814SELECT: PROCEDURE
818818IF CURDSK > MAXDSK THEN
822822ALLOCA = .ALLOC0(SHL(CURDSK, 5))
827827CURTRKA = .CURTRKV(CURDSK)
829829CURRECA = .CURRECV(CURDSK)
832832CALL SELDISK(CURDSK)
835835IF NOT ROR(ROL(DLOG, 1), CURDSK+1) THEN
837837DLOG = DLOG OR ROR(ROL(1, CURDSK+1), 1)
838838CALL INITIALIZE
840840END SELECT
842842CURSELECT: PROCEDURE
843843IF LINFO <> CURDSK THEN
844844CURDSK = LINFO
844
910
844
910
CALL SELECT
846846END CURSELECT
848848RESELECT: PROCEDURE
850850IF (LINFO := (S AND 1$1111B) -1) < 30 THEN
851851OLDDSK = CURDSK
851851FCBDSK = S
851851S = S AND 1110*0000B
852
914
963
852
914
963
CALL CURSELECT
854854END RESELECT
856856SETDMA: PROCEDURE(A)
857857DECLARE A ADDRESS
858858CALL SELDMA(BUFFA.= A)
859859END SETDMA
865865DECLARE STACK (16) ADDRESS,
866866OLDSP ADDRESS
868868OLDSP = STACKPTR
869869STACKPTR = STACK(LENGTH(STACK))
872872LINFO = LOW(INFO)
873873ARET, RET = 0
874874FCBDSK = 0
876876DO CASE FUNC
881881IF ((RET := CONIN) >= ) OR
882882(RET = CR) OR (RET = LF) OR (RET = TAS) THEN
883883CALL TABOUT(RET)
886886CALL TABOUT(LINFO)
888888RET = READIN
890890CALL PUNOUT(LINFO)
892892CALL LSTOUT(LINFO)
894894ARET = FDOS
896896ARET = IOSTAT
898898IOSTAT = INFO
900900CALL PRINT(INFO)
902902CALL READ
904904RET = CONBRK
908908CURDSK,D LOG = 0
909909CALL SETDMA(80H)
911911CHAR$RDY, LISTCOPY = FALSE
916
920
924
928
932
936
940
944
948
916
920
924
928
932
936
940
944
948
CALL RESELECT
933933CALL DELETE
937937CALL DISKREAD
941941CALL DISKWRITE
949949CALL RENAME
952952RET = DLOG
954954RET = CURDSK
956956CALL SETDMA(INFO)
958958ARET = ALLOCA
961961GOBACK:
962962IF FCBDSK <> 0 THEN
963963S = FCBDSK
963963LINFO = OLDDSK
966966STACKPTR = OLDSP
969969RETURN ARET OR RET
970970END DISKMON
972972DECLARE TEMPDATA(10) BYTE

to top

Matching Comments and Strings
File1 Line# File2 Line# Comment/String
113200H
22CP/M BDOS
33COPYRIGHT (C) 1976
44DIGITAL RESEARCH
55BOX 579, PACIFIC GROVE
66CALIFORNIA, 93950
88WBOOT
1111C P / M B A S I C I / O S Y S T E M (B I O S)
14143B00H
1414DISK INTERFACE AND CONSOLE IO
1515THE FOLLOWING SUBROUTINES ARE ASSUMED TO EXIST,
1616STARTING AT THE ADDRESS 'BASE'
1818BASE BOOT SYSTEM REBOOT OPERATION
1919BASE+3 WBOOT SYSTEM REBOOT - WARM START
2020BASE+6 CONSTAT CONSOLE STATUS - RETURNS
21210 IN REG-A IF NO CONSOLE DATA READY
2222FF IF CHARACTER IS READY
2323BASE+9 CONIN CONSOLE CHARACTER INTO ACCUMULATOR - 0 PARITY
2424BASE+12 CONOUT CONSOLE CHARACTER SENT FROM REGISTER C
2525BASE+15 LIST SEND CHARACTER FROM REGISTER C TO LIST DEVICE
2626BASE+18 PUNCH SEND CHARACTER FROM REGISTER C TO PUNCH DEVICE
2727BASE+21 READER READ CHARACTER TO REGISTER A WITH 0 PARITY
2828BASE+24 HOME MOVE DISK HEAD TO TRACK 0
2929BASE+27 SELDSK SELECT DISK DRIVE GIVEN BY REGISTER C (0, 1, ..)
3030BASE+30 SETTRK SET TRACK (0-76) GIVEN BY REGISTER C
3131BASE+33 SETSEC SET SECTOR NUMBER GIVEN BY REG C (1-26)
3232BASE+36 SETDMA SET DMA ADDRESS GIVEN BY REG PAIR B, C (INITIALLY
3333DEFAULTED TO 86H)
3434BASE+39 READ READ DISK SECTOR (SETTRK, SETSEC, SELDSK ASSUMED)
3535ERROR RETURNS IN REGISTER A IN THREE
3636LEAST SIGNIFICANT BITS (2, 1, AND 0)
3737BIT ERROR
38380 HARDWARE MALFUNCTION
39391 DRIVE NOT READY
40402 COMMAND SEQUENCE ERROR
4141BASE+42 WRITE WRITE DISK SECTOR (SETTRK...SELDSK ASSUMED)
4242ERROR RETURNS IN REGISTER A AS ABOVE
4444CP/M ALSO PROVIDES A TEN BYTE AREA IMMEDIATELY AHEAD OF THE
4545DISK AND CONSOLE INTERFACE FOR TEMPORARY STORAGE IN CASE THE
4646INTERFACE IS IMPLEMENTED IN ROM
5454COPYRIGHT (C) 1976, DIGITAL RESEARCH
5757LOW ORDER INFO
6161FUNC IS THE DISK MONITOR FUNCTION NUMBER AS SHOWN BELOW
62620: SYSTEM RESET
63631: READ CONSOLE DEVICE
64642: WRITE CONSOLE DEVICE
65653: REAL READER DEVICE
66
889
66
889
4: WRITE PUNCH DEVICE
67
891
67
891
5: WRITE LIST DEVICE
68
893
68
893
6: INTERROGATE MEMORY SIZE
69
895
69
895
7: INTERROGATE DEVICE STATUS
70
897
70
897
8: CHANGE DEVICE STATUS
71719: PRINT BUFFER ON CONSOLE
727210: READ BUFFER FROM CONSOLE
737311: CONSOLE CHARACTER READY
747412: LIFT HEAD (NO OPERATION ON CPM 16D2JUN75)
757513: RESET DISK SYSTEM - SELECT DISK 0
76
913
76
913
14: SELECT DISK 'INFO'
777715: OPEN FILE
787816: CLOSE FILE
797917: SEARCH FOR FIRST OCCURRENCE
808018: SEARCH FOR NEXT OCCURRENCE
81
931
81
931
19: DELETE A FILE
82
935
82
935
20: READ A FILE
83
939
83
939
21: WRITE A FILE
84
943
84
943
22: CREATE A FILE
85
947
85
947
23: RENAME A FILE
868624: RETURN LOGIN VECTOR - EACH BIT CORRESPONDS TO
8787A DISK NUMBER, FROM LSB TO MSB. 1 INDICATES
8888THE DISK IS LOGGED IN.
898925: RETURN CURRENTLY SELECTED DISK NUMBER
909026: SET SUBSEQUENT DMA ADDRESS
919127: RETURN BASE ADDRESS OF ALLOCATION VECTOR
9292(USED TO DETERMINE REMAINING SPACE)
9696LITERALLY
97973E$00H
98983E$03H
99993E$06H
1001003E$09H
1011013E$0CH
1021023E$0FH
1031033E$12H
1041043E$15H
1051053E$19H
1061063E$1BH
1071073E$1EH
1081083E$21H
1091093E$24H
1101103E$27H
1111113E$2AH
116116TRUE IF CHAR READ
117117VALUE OF CHARACTER WHEN CHAR$RDY IS TRUE
118118TRUE IF COPYING TO LIST DEVICE
121121RETURN TRUE IF CHAR READY AT CONSOLE
126126READ NEXT CONSOLE CHARACTER
127127CHARACTER IS READY
130130OTHERWISE READ THE CHARACTER
135
277
466
135
277
466
03H
13613613H
137137CHARACTER ALREADY READ
138138CHECK FOR TYPE TERMINATION FUNCTION
140140STOP TYPE
156156CHECK FOR BREAK CHARACTER
158158SEND CONSOLE CHARACTER
203203CONSOLE COMMUNICATION PROCEDURES
206206SPECIAL CHARACTERS
2072077DH
2082081BH
2092090SH
21021007H
214214CURRENT CONSOLE COLUMN
216216IO STATUS BYTE LOCATION
217217VALUE OF STATUS BYTE
218218IOSTAT DEFINES THE CURRENT DEVICE ASSIGNMENT
2192190-1 CONSOLE
220
225
230
235
220
225
230
235
0 TTY
221
236
221
236
1 CRT
2222222 BATCH (USE READER DEFINITION)
2232233 USER (1)
2242242-3 READER
2262261 PTR
227
232
237
227
232
237
2 USER (1)
228
233
238
228
233
238
3 USER (2)
2292294-5 PUNCH
2312311 PTP
2342346-7 LIST
261261PRINT THE STRING STARTING AT ADDRESS A UNTIL THE NEXT
262262OCCURRENCE OF A DOLLAR SIGN
269269READ CHARACTERS FROM THE CONSOLE DEVICE
270270INTO THE MEMORY LOCATION GIVEN BY 'INFO',
271271UNTIL THE FIRST CARRIAGE RETURN
272272IS ENCOUNTERED. ALLOW BACKSPACE (RUBOUT),
273273LINE ELIMINATE (CTL U), AND SYSTEM RE-BOOT
274274(CTL C)
2762765CH
27827815H
2792795EH
28028005H
28128110H
2822821AH
2832830CH
285285THE INFO POINTER IS ASSUMED TO ADDRESS AN
286286AREA OF MEMORY CONTAINING TWO BYTE QUANTITIES
287287THE FIRST GIVES THE MAXIMUM BUFFER LENGTH, AND
288288THE SECOND IS SET TO THE NUMBER OF CHARACTERS
289289SCANNED UPON RETURN
291291MAX LENGTH
292292SCANNED LENGTH
293293BUFFER
297297PRINT UP-ARROW IN FRONT OF LAST CHARACTER READ
303303MAKE ALPHABETICS UPPER CASE
308308PHYSICAL RETURN
319319RUBOUT
325325CONTROL CHARACTER
334334MAX DISK NUMBER 0, 1, ...
335335NUMBER OF DISKS = MAXDSK+1
342342DMX IS THE LAST DIRECTORY ENTRY NUMBER
343343(LISTED AS B, 1, ... , DMX)
345345NUMBER OF TRACKS USED BY BOOT
3473470C0H
347347FIRST ALLOCATION
348348VECTOR ELEMENT, EACH BIT THAT IS '1' RESERVES
349349A 1 K BLOCK FOR THE DIRECTORY, EACH BLOCK IS
3503508 RECORDS BY 12S BYTES PER RECORD (NOTE THAT
351351RESERVATIONS START ON THE LEFT OF THE WORD
353353ALLOCATION VECTOR FOR DISK 0
354354ALLOCATION VECTOR FOR DISK 1
355355POINTER TO CURRENTLY REFERENCED ALLOC
356356ALLOC VECTOR TEMPLATE
3593590E5H
361361NUMBER OF READ RE-TRYS
363363WHILE TRUE
364364242
364364LARGEST BLOCK NUMBER
365365127
365365LARGEST RECORD NUMBER
366366AMOUNT TO SHIFT 128 BYTE RECORD
367367TO GET A SINGLE DISK ENTRY
368368118
368368MASK CORRESPONDING TO DSF
370370AMOUNT TO SHIFT TO MULTIPLY
371371BY THE FCB LENGTH (FLN)
372372BEGINNING OF DISK MAP
373373LOCATION OF REC TO R/W
374374LOCATION OF RECORD COUNT
375375(MUST BE ONE BELOW DISK MAP)
376376POSITION OF REEL NUMBER
378378LENGTH OF FILE NAME
380380FILE CONTROL BLOCK
381381PASSED TO THE DISK MONITOR FROM THE USER
383383THE FILE CONTROL BLOCK FORMAT IS SH0WN BELOW:
384
387
384
387
--------------------------------------------------------
385385/ 1 BY / 8 BY / 3 BY / 1 BY /2BY/1 BY/ 16 BY /
386386/F1LETYPE/ NAME / EXT / REEL NO/XXX/RCNT/DM0 DM15/
389389FILETYPE : 0E5H IF AVAILABLE (OTHERWISE UNDEFINED NOW)
390390NAME : 8 CHARACTER PRIMARY NAME
391391EXT : 3 CHARACTER EXTENT
392392COM IMPLIES COMMAND TYPE
393393(OTHERWISE UNDEFINED NOW)
394394REEL NO : 'REEL NUMBER' FIRST REEL IS 0, SECOND IS 1,
395395AND SO FORTH UNTIL 255
396396XXX : UNUSED FOR NOW
397397RCNT : RECORD COUNT IN FILE (0 TO , 127)
398398DM0 ... : DISK ALLOCATION MAP, 255 IF NOT ALLOCATED,
399399DM15 OTHERWISE IT POINTS TO ALLOCATED DISK BLOCK
401401THE FILE CONTROL BLOCK IS FOLLOWED BY ONE BYTE OF
402402INFORMATION WHICH GIVES THE NEXT RECORD , TO BE READ
403403OR WRITTEN IN AN OPENED FILE. THIS INFORMATION
404404IS NOT A PART OF THE DIRECTORY. EACH READ OR WRITE
405405WILL INCREMENT THIS RECORD COUNT.
411411DISK ON ENTRY TQ DOS
412412DISK NAMED IN FCB
413413CURRENTLY ADDRESSED DISK
414414BIT VECTOR GIVING LOGGED-IN DISKS
415415TRACK VECTOR
416416RECORD VECTOR
417417POINTS TO CURRENT TRACK NUMBER
418418POINTS TO CURRENT RECORD NUMBER
419419CURRENTLY ADDRESSED RECORD
420420CURRENT TRACK 0-76
421421RECORD COUNT IN CURRENTLY
422422ADDRESSED FCB
423423CURRENT VIRTUAL RECORD
424424CURRENT ACTUAL RECORD
427427DISK $
432432MOVE TO HOME POSITION, THEN OFFSET BY DOS TRACKS
433433AT HOME POSITION
434434SELECT FIRST DIRECTRY POSITION
439439SEEK THE TRACK GIVEN BY ARECORD (ACTUAL RECORD)
440440SECTOR NUMBER TRANSLATE TABLE
456456WE ARE NOW POSITIONED OVER THE TRACK CONTAINING THE ACTUAL
457457RECORD. THE SECTOR TO BE READ IS ARECORD - CURREC + 1. THE
458458TRACK NUMBER IS CURTRK
464464TRUE IF READING, FALSE IF WRITING
465465CONDITION UPON RETURN
469469DISK I/O SUCCESSFUL
471471ARRIVE HERE AFTER TOO MANY READ WRITE FAILURES
472472PERM ERR $
474474ENSURE NOT BATCH PROCESSING
481481START AN I/O AND WAIT FOR 10 FINISH
486486WRITE THE BUFFER, SELECT NON-DELETED DATA
491491COMPUTE DISK BLOCK HUMBER FROM CURRENT
492492FCB ADDRESSED BY INFO
497497COMPUTE ACTUAL TRACK ADDRESS (ASSUMES
498498PREVIOUS CALL TO INDEX
503503SET VARIABLES FROM CURRENTLY ADDRESSED FCB.
509509PLACE VALUES BACK INTO CURRENTLY ADDRESSED
510510FCB, AND INCREMENT THE RECORD COUNT
516516SEEK THE RECORD CONTAINING THE CURRENT DIRECTORY ENTRY
522522READ NEXT DIRECTORY ENTRY (SET DCNT=255 INITIALLY)
543543RETURN THE I-TH BIT OF ALLOC
549549SET THE I-TH BIT OF ALLOC TO THE LSB OF B
567567SCANDM SCANS THE DISK MAP ADDRESSED BY DPTR FOR NON-ZERO ENTRIES
568568-- THE ALLOCATION VECTOR ENTRY CORRESPONDING TO A NON-ZERO ENTRY
569569IS SET TO THE VALUE OF 'BIT'
578578INITIALIZE THE DISK SYSTEM
579579SET TO TRUE IF $ FILE EXISTS
589589CHECK FOR $ FILE (IN CASE OF SUBMIT)
591591SET ALLOC BIT TO 1 FOR EACH NON-ZERO DM ENTRY
597597SEARCH LENGTH SET BY SEARCH
598598SEARCH ADDRESS SET BY SEARCH
601601SEARCH FOR THE NEXT DIRECTORY ELEMENT, ASSUMING A PREVIOUS
602602CALL ON SEARCH WHICH SETS SEARCHA AND SEARCHL
610610MATCH OR QUESTION MARK
624624NOW READY TO READ THE DISK
630630SEARCH ONLY UP THROUGH THREE CHARACTER EXTENT
633633NO MORE ENTRIES MATCH
634634SET EACH NON-ZERO DISK MAP ENTRY TO 0;IN ALLOC VECTOR
637637ARECORD HAS BEEN PREVIOUSLY SOUGHT BY READDIR
644644FIND A BLOCK WHICH IS AVAILABLE ON THE DISK AND IS CLOSEST
645645TO THE BLOCK 'L', RETURN A 0 IF NO BLOCK IS AVAILABLE
659659COPY FCB INFORMATION STARTING AT BYTE B FOR L BYTES INTO
660660BEGINNING OF CURRENTLY ADDRESSED DIRECTORY ENTRY
669669COPY THE ENTIRE FILE CONTROL BLOCK
674674RENAME THE FILE DESCRIBED BY THE FIRST HALF OF THE CURRENTLY
675675ADDRESSED FILE CONTROL BLOCK. THE NEW NAME IS CONTAINED IN THE
676676LAST HALF OF THE CURRENTLY ADDRESSED FILE CONTROL BLOCK. THE
677677FILE TYPE, FILE NAME, AND FILE EXT ARE CHANGED, BUT THE REEL
678678NUMBER FIELD IS IGNORED
680680SEARCH UP TO THE REEL NUMBER FIELD
689689SEARCH FOR DIRECTORY ENTRY, COPY TO FCB
698698LOCATE THE DIRECTORY ELEMENT AND RE-WRITE
705705CREATE A NEW FILE; FIRST CREATE ENTRY IN
706706THE DIRECTORY. FILE IS OPENED UPON RETURN
710710LOOK FOR AN EMPTY DIRECTORY ENTRY
713713SET ELEMENTS TO ZERO
718718COPY INTO DIRECTORY ENTRY
725725CLOSE CURRENT REEL AND OPEN THE HEXT ONE, IF POSSIBLE
726726READING IS TRUE IF WE ARE IN READ MODE
728728RET REMAINS AT 255 IF WE CANNOT OPEN THE NEXT REEL
730730INCREMENT THE REEL NUMBER
739739END OF FILE IN DISK READ
757757ERROR 2 IF READING UNWRITTTEN DATA
760760ARECORD IS NOW ACTUAL DISK ADDRESS
762762NOW READ THE BUFFER
774774PAST EOF, NEXT REEL NOT OPENED
777777NOT ALLOCATED
778778THE ARGUMENT TO GET$BLOCK IS THE STARTING POSITION
779779FOR THE DISK SEARCH - THIS SHOULD BE THE LAST 'ALLOCATED
780780BLOCK FOR THIS FILE, OR THE VALUE 0 IF NO SPACE HAS BEEN
781781ALLOCATED TO THIS FILE
784784THERE IS A PREVIOUS BLOCK ALLOCATED
785785NO MORE SPACE
788788BLOCK IS ALLOCATED
792792CONTINUE IF NO ERROR IN ALLOCATION
798798CHECK FOR END-OF-REEL, IF FOUND ATTEMPT TO OPEN
799799NEXT REEL IN PREPARATION FOR THE NEXT, WRITE
802802UPDATE CURRENT FCB BEFORE GOING TO THE NEXT REEL
804804VRECORD REMAINS AT MRC CAUSING END-OF-FILE
805805IF NO MORE DIRECTORY SPACE IS AVAILABLE
806806GOES TO ZERO
815815SELECT DISK 'INFO' FOR SUBSEQUENT
816816INPUT OR OUTPUT OPERATIONS
818818SELECTION ERROR
819819SELECT ERROR $
823823NOTE THAT THIS ASSUMES THERE ARE NO MORE
824824THAN 8 DISKS ON THE SYSTEM - OTHERWISE
825825REPLACE BY .ALLOC0(SHL(DOUBLE(CURDSK), 5))
831831SET CONTROLLER
834834CHECK TO INSURE THAT DISK IS LOGGED IN
849849CHECK CURRENT FCB TO SEE IF RESELECTION NECESSARY
861861ARRIVE HERE UPON ENTRY TO THE DISK MONITOR
862862SAVE THE STACKPOINTER, PERFORM THE DESIRED FUNCTION,
863863RESTORE THE STACKPOINTER, AND RETURN TO THE CALLING
864864PROGRAM.
870870CALLING PROGRAM'S STACK TOP ADDRESS NOW SAVED
8778770: SYSTEM RE-BOOT
8798791: READ CONSOLE
880880READ CHARACTER, TEST FOR GRAPHICS
8858852: WRITE CONSOLE
8878873: READ READER DEVICE
8998999: PRINT BUFFER AT THE CONSOLE
90190110: READ BUFFER FROM THE CONSOLE
90390311: CHECK FOR CONSOLE INPUT READY
90590512:
90790713: RESET DISK SYSTEM, INITIALIZE TO DISK 0
91591515: OPEN
91991916: CLOSE
92392317: SEARCH FOR FIRST OCCURRENCE OF A FILE
92792718: SEARCH FOR NEXT OCCURRENCE OF A FILE NAME
95195124: RETURN THE LOGIN VECTOR
95395325: RETURN SELECTED DISK NUMBER
95595526: SET THE SUBSEQUENT DMA ADDRESS TO INFO
95795727: RETURN THE LOGIN VECTOR ADDRESS
959959OF CASES
962962RESTORE DISK NUMBER
965965RESTORE THE USER'S STACK AREA
968968RETURN A SINGLE OR DOUBLE BYTE VALUE
972972TEN LOCATIONS IN RAM FOR THE INTERFACE

to top

Matching Instruction Sequences
File1 Line# File2 Line# Number of matching instructions
1 1 658
916 932 13
916 936 13
916 940 12
916 928 12
928 916 12
928 932 19
928 936 15
928 940 11
932 916 13
932 928 19
936 916 13
936 928 15
940 916 12
940 928 11

to top

Matching Identifiers
0000B 01100000B 01H 02H 03H 04H 05H 06H
07H 08H 09H 0AH 0BH 0DH 0FEH 0FH
1$1111B 10 10H 1110 1118 111B 11B 11H
128 12H 13H 14H 15H 16 16H 17H
18H 19H 1AH 254 255 26 30 31
32 33 40H 60H 63 7FH 80H AL1
ALLOC ALLOC0 ALLOC1 ALLOCA ALT ARECORD ARET ATRAN
BASE BCH BEH BEL BIT BOOT BOOTF BUFF
BUFFA BUFFER CHAR CHAR$RDY CLOSE COLUMN COMLEN CONBRK
CONCF CONCHAR COND CONIF CONIN CONOF CONOUT CONRDY
CONSF COPY$DIR COPY$FCB COPYRIGHT CR CRLF CTL CTLC
CTLE CTLL CTLOUT CTLP CTLS CTLU CTLZ CUPTRK
CURDSK CURREC CURRECA CURRECV CURSELECT CURTRK CURTRKA CURTRKV
DCNT DCRT DELETE DISK DISKMON DISKREAD DISKWRITE DLOG
DMAF DMK DMX DPTR DRDF DSF DWRF EMP
EQU ESC FALSE FCB FCBDSK FDM FDOS FLN
FNM FOREVER FRC FRE FRL FSL FUNC GET$ALLOC
GET$ALLOC$BIT GET$BLOCK GETBUFF GETFCB GOBACK HOME HOMF INDEX
INFO INITIALIZE IOSTAT IOSTATA KB$CHAR LENGTH LF LFB
LINFO LISTCOPY LISTF LOG LOW LSTOUT MAKE MAL
MAXDSK MAXL MB MRC MRD MRG NDISK OLDDSK
OLDSP OPEN OPEN$REEL OPENREEL PDISK PRINT PROOT PUNF
PUNOUT PUT$ALLOC PUTBUFF RCOUNT RDBUFF READ READ$DIR READ$DISK
READF READIN READING RENAME RESELECT RET ROL ROR
SCANDM SEARCH SEARCHA SEARCHL SEARCHN SECF SECTOR SEEK
SEEK$DIR SELDISK SELDMA SELECT SELF SELSEC SELTRK SET$ALLOC$BIT
SET$ALLOC$SIT SETDMA SETFCB SHL SHR SLASH SOOT STACK
STACKPTR TAB TABOUT TAS TEMPDATA TRACK TRACK0 TRAN
TRKF TRUE VRECORD WAITIO WRBUFF WRITE$DISK XL

to top

Partially Matching Identifiers
*** NONE ***
to the top
SCORE 100

CodeSuite copyright 2003-2016 by Software Analysis and Forensic Engineering Corporation